﻿package org.yawnage.interfaces.framework 
{
	import flash.utils.Dictionary;
	
	 /**
	  * <p>//TODO:To be written</p>
	  * @author Berry Jordaan
	  * @date 2011/09/06 08:57 AM
	  * @copyright Copyright © Berry/James 2011
	  * @version 1.0.0.0
	  * @description
	  * @history Berry Jordaan on 2011/09/06 08:57 AM: Created
	  */
	 
	public interface IBridge 
	{
		/**
		 * 
		 * @param	dataP
		 */
		function forwardMessage(dataP:ITransportLayer = null):void;
		
		/**
		 * 
		 * @param	dataP
		 */
		function debugForwardMessage(dataP:ITransportLayer = null):void;
		
		/**
		 * 
		 * @param	subscriberP
		 * @param	callbackP
		 * @param	priority
		 */
		function subscribe(subscriberP:ISubscriber, callbackP:Function, priority:int = 0):void;
		
		/**
		 * 
		 * @param	subscriberP
		 * @param	callbackP
		 */
		function unSubscribe(subscriberP:ISubscriber, callbackP:Function):void;
		
		/**
		 * 
		 */
		function unSubscribeAll():void;
		
		/**
		 * 
		 */
		function printSubscribers():void;
		
		/**
		 * 
		 * @return
		 */
		function returnSubscribers():Dictionary;

		/**
		 * 
		 */
		function get numberSubscribers():Number;

		/**
		 * 
		 */
		function get publisher():String;

		/**
		 * 
		 */
		function get service():String;

		/**
		 * 
		 */
		function dispose():void;
	}
	
}